package com.t.bricks.bussiness.service.orders;

import com.t.bricks.bussiness.db.entity.orders.Orders;
import com.t.bricks.bussiness.service.common.BaseService;
import com.t.bricks.model.MsgEmity;

/**
 * 订单Orders表基本业务操作类接口定义
 * 继承BaseService可直接实现通用方法
 * @author HuangXinBian
 * @DateTime 2022年06月22日 15:25:29
 * @param <T> 实体类
 */
public interface OrdersService<T> extends BaseService<T> {

	/**
	 * 添加
	 * @Param orders
	 * @return int
	 */
	MsgEmity addCustom(Orders orders);
	
	/**
	 * 查询购物车对应详情
	 * @param cartIds 购物车编号(分号分隔)
	 * @return List<OrdersDetailBase>
	 */
	MsgEmity cartToDetail(String cartIds);
	
	/**
	 * 设置状态-支付
	 * @param sId 记录编号
	 * @param sRechargeNo 充值订单号
	 * @param iVersion 记录版本号
	 * @param sPayPass 支付密码
	 * @param sPaySignPass 支付手势密码
	 * @return
	 */
	MsgEmity pay(String sId, String sRechargeNo, Integer iVersion, String sPayPass, String sPaySignPass);

	/**
	 * 设置状态-免密支付(仅限订单所属顾客操作)
	 * @param sId 记录编号
	 * @param sRechargeNo 充值订单号
	 * @param iVersion 记录版本号
	 * @return
	 */
	MsgEmity payNotPass(String sId, String sRechargeNo, Integer iVersion);
	
	/**
	 * 设置状态-销售
	 * @param sId
	 * @param iVersion
	 * @return
	 */
	MsgEmity sales(String sId, Integer iVersion);
	
	/**
	 * 设置状态-送出(待揽货)
	 * @param sId
	 * @param iVersion
	 * @param sDeliveryDate
	 * @param sDelivery
	 * @param sDeliveryman
	 * @param sDeliveryNo
	 * @param sDelveryCode
	 * @return
	 */
	MsgEmity delivery(String sId, Integer iVersion, String sDeliveryDate,
			String sDelivery, String sDeliveryman, String sDeliveryNo,
			String sDelveryCode);
	
	/**
	 * 顾客签收
	 * @param sId
	 * @param iVersion
	 * @param sSignIn
	 * @return
	 */
	MsgEmity signIn(String sId, Integer iVersion, String sSignIn);
	
	/**
	 * 顾客确认
	 * @param sId
	 * @param iVersion
	 * @param sConfirm
	 * @return
	 */
	MsgEmity confirm(String sId, Integer iVersion, String sConfirm);
	
	/**
	 * 顾客退货申请
	 * @param sId
	 * @param iVersion
	 * @param sReturnApply 退货申请说明
	 * @return
	 */
	MsgEmity returnApply(String sId, Integer iVersion, String sReturnApply);
	
	/**
	 * 退货审核
	 * 8:退货审核不通过;9:退货申请通过;10:已退款
	 * @param sId
	 * @param iVersion
	 * @param iState
	 * @return
	 */
	MsgEmity untreadAudit(String sId, Integer iVersion, Integer iState);
	
	/**
	 * 设置状态-审核
	 * @param sId
	 * @param iVersion
	 * @return
	 */
	MsgEmity audit(String sId, Integer iVersion);
	
	/**
	 * 设置状态-复审
	 * @param sId
	 * @param iVersion
	 * @return
	 */
	MsgEmity recheck(String sId, Integer iVersion);
	
	/**
	 * 根据订单详情和目的地,测算运费
	 * @param iNumbers 订单详情中的数量集合(分号分隔)
	 * @param sWaresIds 订单详情中的商品编号集合(分号分隔)
	 * @param sArea 目的地
	 * @return
	 */
	MsgEmity reckonFreight(String iNumbers, String sWaresIds, String sArea);
	
	/**
	 * 取订单创建时间
	 * @param sId 订单详编号
	 * @return
	 */
	MsgEmity getCreateDate(String sId);
	
	/**
	 * 查看快递信息
	 * @param sId
	 * @return
	 */
	MsgEmity lookDelivery(String sId);

}
